// @ts-nocheck
// 驼峰命名转横杠命名

// 如何匹配大写字母 ？

export type RemoveFirst<T, S> = T extends `${S}${infer V}` ? V : T;
export type KebabCase<T extends string, F extends string = ""> = 
T extends `${infer L}${infer R}` ? 
// 这里处理当前字符是不是大写的 大写的就将它转换成 -
KebabCase<R,`${F}${Capitalize<L> extends L ? `-${Lowercase<L>}` : L}`>: RemoveFirst<F, "-">

type a1 = KebabCase<"HandleOpenFlag">;
type a2 = KebabCase<"OpenFlag">;


export {};